const { newsAPI } = require('../../utils/util.js')

Page({
  data: {
    dynamicList: [], // 动态列表数据
    searchKey: '', // 搜索关键词
    isLoading: false, // 加载状态
    hasMore: false, // 是否还有更多数据（后端返回所有数据）
  },

  onLoad() {
    this.loadNewsData();
  },

  // 加载新闻数据
  loadNewsData() {
    if (this.data.isLoading) return;

    this.setData({ isLoading: true });

    const params = {
      currentUserId: 1 // 使用写死的用户ID
    };

    // 添加搜索条件
    if (this.data.searchKey) {
      params.newsTitle = this.data.searchKey;
    }

    // 打印请求信息用于调试
    console.log('请求新闻参数:', params);
    console.log('请求新闻URL:', `${getApp().globalData.apiBaseUrl}/api/news/search`);

    newsAPI.searchNews(params)
      .then(res => {
        console.log('新闻数据获取成功:', res);
        
        if (res.code === 200) {
          // 转换数据格式以适配前端显示
          const newsList = res.data.map(news => ({
            id: news.newsId,
            title: news.newsTitle,
            summary: this.cleanHtmlTags(news.newsSummary),
            cover: this.buildImageUrl(news.newsImagePath),
            time: this.formatDateTime(news.createTime),
            author: news.author,
            content: news.newsContent,
            status: news.newsStatus
          }));
    
    this.setData({
            dynamicList: newsList,
            isLoading: false,
            hasMore: false // 后端返回所有数据，不需要分页
          });
        } else {
          console.error('新闻API返回错误:', res);
          wx.showToast({
            title: res.message || '获取数据失败',
            icon: 'none'
          });
          this.setData({ isLoading: false });
        }
      })
      .catch(err => {
        console.error('获取新闻数据失败:', err);
        console.error('错误详情:', err.message);
        wx.showToast({
          title: '网络请求失败',
          icon: 'none'
        });
        this.setData({ isLoading: false });
    });
  },

  // 格式化日期时间
  formatDateTime(dateTimeStr) {
    if (!dateTimeStr) return '';
    const date = new Date(dateTimeStr);
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    return `${year}-${month}-${day}`;
  },

  // 构建图片URL
  buildImageUrl(imageName) {
    if (!imageName) {
      console.log('新闻图片名称为空，使用默认图片');
      return 'https://picsum.photos/300/180?random=1'; // 默认图片
    }
    // 如果已经是完整URL，直接返回
    if (imageName.startsWith('http://') || imageName.startsWith('https://')) {
      console.log('新闻图片已经是完整URL:', imageName);
      return imageName;
    }
    // 构建完整的图片URL
    const fullUrl = `${getApp().globalData.apiBaseUrl}/images/${imageName}`;
    console.log('构建新闻图片URL:', fullUrl);
    return fullUrl;
  },

  // 清理HTML标签
  cleanHtmlTags(htmlContent) {
    if (!htmlContent) return '';
    
    // 移除HTML标签，保留文本内容
    return htmlContent
      .replace(/<p[^>]*>/gi, '') // 移除开始p标签
      .replace(/<\/p>/gi, '\n') // 将结束p标签替换为换行
      .replace(/<br[^>]*>/gi, '\n') // 将br标签替换为换行
      .replace(/<[^>]+>/g, '') // 移除其他所有HTML标签
      .replace(/&nbsp;/g, ' ') // 将&nbsp;替换为空格
      .replace(/&amp;/g, '&') // 将&amp;替换为&
      .replace(/&lt;/g, '<') // 将&lt;替换为<
      .replace(/&gt;/g, '>') // 将&gt;替换为>
      .replace(/&quot;/g, '"') // 将&quot;替换为"
      .trim(); // 去除首尾空格
  },

  // 搜索输入监听
  onSearchInput(e) {
    this.setData({ searchKey: e.detail.value });
  },

  // 执行搜索
  doSearch() {
    this.setData({ dynamicList: [] });
    this.loadNewsData();
  },

  // 跳转到详情页
  goDetail(e) {
    const id = e.currentTarget.dataset.id;
    wx.navigateTo({
      url: `/pages/dynamic/detail?id=${id}`
    });
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.setData({ dynamicList: [] });
    this.loadNewsData().then(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 用户点击右上角分享
  onShareAppMessage() {
    return {
      title: '测盟汇行业动态',
      path: '/pages/dynamic/list'
    };
  }
});